package model

import (
	"time"
)

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 下载实体
 */
type Note struct {
	// 下载评论主键 -- 忽略使用omitempty
	Id             uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	Title          string    //下载标题
	Url            string    //站外访问地址
	Content        string    //内容
	HtmlContent    string    //内容
	Tags           string    //标签
	Img            string    //下载资源封面
	Description    string    //描述
	Viewcount      int       //预览数量、
	Notetype       int       // 基础课 2进阶课 3 实战小册 4 面试课
	CommentFlag    int       //是否允许评论 1允许 0不允许
	IsDeleted      int       //是否删除 1删除 0 微山粗
	Uuid           string    //用户唯一标识
	Avatar         string    //上传用户头像
	Username       string    // 用户名
	Userid         uint64    //上传用户ID
	FavNum         int       //收藏人数
	CommentNum     int       //评论数量
	BuyNum         int       //购买人数
	Price          string    //购买价格
	Realprice      string    //真实价格
	Stimer         string    // 时长
	SpecialId      uint64    // 专栏ID
	ChannelId      uint64    // 栏目
	ChannelIds     string    // 栏目ids
	ChannelName    string    //栏目名称
	PanLink        string    //网盘地址
	PanPwd         string    //网盘密码
	SystemId       uint64    //系统ID
	SystemName     string    //系统名称
	CreateTime     time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime     time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
	Status         int       //发布状态 1发布 0未发布
	NewFlag        int       //是否最新 1最新 0非最新
	HotFlag        int       //是否热门 1热门0非热门
	PushFlag       int       //是否推荐 1推荐 0不推荐
	VipFlag        int       //1所有人可见 2 VIP免费 3：SVIP免费
	PayFlag        int       //1免费  2 收费
	ShowFlag       int       // 是否展示，1展示 0隐藏
	Finished       int       // 是否完成，1展示 0隐藏
	Sorted         int       // 排序
	Path           string    // 短路径
	ClientLink     string    // 客服号
	ClientLinkName string    // 客服名称
	ClientLinkImg  string    // 客服二维码
	QqLinkCode     string    // qq群
	QqLinkName     string    // qq群名称
	QqLinkImg      string    // qq群二维码
	WeixinLink     string    // 微信群号
	WeixinLinkName string    // 微信群名称
	WeixinLinkImg  string    // 微信二维码
	ClientFlag     int       // 是否打开二维码
	Weixingzcode   string    //微信公众号
	Weixingzimg    string    //微信公众号图片
	Opengz         int       //是否打开公众号 1 打开 0不打开
	Videoid        string
	Ntype          int //1手册 2视频
	NoticeMsg      string
	ChapterFlag    int    // 1无章节  2有章节 决定URL地址的调转
	Otherinfo      string // 下载内容
	CategoryId     uint64
	CategoryName   string
}

func (u *Note) TableName() string {
	return "xk_note"
}

/**
 * @desc 收藏
 * @author feige
 * @date 2023-11-15
 * @version 1.0
 */
type NoteUserFav struct {
	ID         uint64    `orm:"column(id);pk;auto;description(主键)"` // 主键
	UserId     uint64    //用户id
	Uuid       string    // 用户UUID
	Nickname   string    //昵称
	Username   string    // 用户名
	Avatar     string    // 用户头像
	IsFocus    int       //1 已收藏 0未收藏
	Opid       uint64    //下载
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
}

func (u *NoteUserFav) TableName() string {
	return "xk_note_user_fav"
}

/**
 * @desc 收藏
 * @author feige
 * @date 2023-11-15
 * @version 1.0
 */
type NoteUserLike struct {
	ID         uint64    `orm:"column(id);pk;auto;description(主键)"` // 主键
	UserId     uint64    //用户id
	Uuid       string    // 用户UUID
	Nickname   string    //昵称
	Username   string    // 用户名
	Avatar     string    // 用户头像
	IsFocus    int       //1 已点赞 0未点赞
	Opid       uint64    //下载
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间         // 更新时间
}

func (u *NoteUserLike) TableName() string {
	return "xk_note_user_like"
}

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 下载评论表
 */
type NoteCategory struct {
	// 下载评论主键 -- 忽略使用omitempty
	Id          uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	Title       string    // 分类名称
	Icon        string    // 分类图标
	Description string    // 描述
	ParentId    uint64    // 父ID
	Sorted      int       // 排序 业务使用的是升序 小--大
	Status      int       // 发布状态 0未发布 1发布
	IsDeleted   int       // 删除状态 0未删除 1删除
	SystemId    uint64    // 系统ID
	ChannelId   uint64    // 栏目ID
	ChannelName string    // 栏目名称
	SystemName  string    // 系统名称
	CreateTime  time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime  time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
	ChannelIds  string    // 栏目ids
}

func (u *NoteCategory) TableName() string {
	return "xk_note_category"
}

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 下载评论
 */
type NoteComment struct {
	Id         uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	UserId     uint64    //回复用户
	Nickname   string    //昵称
	Username   string    // 用户名
	Avatar     string    //回复人头像
	Content    string    //回复内容
	Opid       uint64    //下载ID
	Title      string    //下载标题
	ReplyNum   int64     //回复数
	Uuid       string    //用户UUID
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	Status     int       //  发布状态 1发布 1未通过
	Score      int       // 评分
	VipType    int       // vip身份
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
}

func (u *NoteComment) TableName() string {
	return "xk_note_comment"
}

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 下载评论
 */
type NoteCommentReply struct {
	Id         uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	UserId     uint64    //回复用户
	Nickname   string    //昵称
	Username   string    // 用户名
	Avatar     string    //回复人头像
	Content    string    //回复内容
	Opid       uint64    //下载ID
	Pid        uint64    // 父ID
	Title      string    //下载标题
	Uuid       string    //用户UUID
	Score      int       // 评分
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	Status     int       //  发布状态 1发布 1未通过
	VipType    int       // vip身份
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
	ParentId   uint64    //根父ID
}

func (u *NoteCommentReply) TableName() string {
	return "xk_note_comment_reply"
}

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 兑换码
 */
type NoteCode struct {
	Id         uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	Code       string    //兑换码
	Mark       int       //是否兑换
	Opid       uint64    //下载
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
}

func (u *NoteCode) TableName() string {
	return "xk_note_code"
}

/**
 * @author feige
 * @date 2023-10-08
 * @version 1.0
 * @desc 下载浏览数记录
 */
type NoteUserHits struct {
	Id         int       `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	UserId     uint64    //用户ID
	Opid       uint64    //下载
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
	Uuid       string    // 用户uuid
	Avatar     string    // 用户头像
	Nickname   string    //昵称
	Username   string    // 用户名
}

func (u *NoteUserHits) TableName() string {
	return "xk_note_user_hits"
}

/**
 * @desc 用户购买下载
 * @author feige
 * @date 2023-11-15
 * @version 1.0
 */
type UserBuyNote struct {
	Id            uint64    `orm:"column(id);pk;auto;description(主键)"` // 主键
	UserId        uint64    //用户id
	Opid          uint64    //用户学习的下载id
	Nickname      string    //购买用户
	Avatar        string    //头像
	Title         string    //购买下载
	Cover         string    //下载封面
	Description   string    //描述
	Code          string    //兑换码
	Price         string    //购买价格
	Phone         string    //用户手机
	Username      string    //用户姓名
	Address       string    //用户地址
	Orderno       string    //订单编号
	Uuid          string    //用户UUID
	OrderJson     string    //订单完整信息
	Tradeno       string    //订单交易号
	PayMethod     int       //1 微信 2 支付宝 3 兑换码
	PayMethodName string    // 支付方式
	SystemId      uint64    // 系统ID
	SpecialId     uint64    // 专题ID
	ChannelId     uint64    // 栏目ID
	ChannelName   string    // 栏目名称
	SystemName    string    // 系统名称
	CreateTime    time.Time `orm:"auto_now_add;type(timestamp);description(创建时间);"` // 创建时间
	UpdateTime    time.Time `orm:"auto_now;type(timestamp);description(更新时间);"`     // 更新时间
}

func (u *UserBuyNote) TableName() string {
	return "xk_note_user_buy"
}

type NoteChapter struct {
	Id             uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	NoteId         uint64    //章节所属小册id
	Title          string    //章节名称
	Sorted         int       //章节排序
	Status         int       //发布状态1发布0未发布
	NoteTitle      string    //小册标题
	IsDeleted      int       //0未删除 1删除
	Mdcontent      string    //md内容
	Htmlcontent    string    //富文本内容
	TotalTime      string    //总节数
	SystemId       uint64    // 系统ID
	SystemName     string    // 系统名称
	FreeFlag       int       `json:"freeFlag"` //是否免费，0免费，1收费
	Videoid        string    //云端视频资源id
	Duration       string    //视频时长(秒)
	Videosize      string    //视频大小(字节)
	VideoSourceUrl string    //源视频地址
	CreateTime     time.Time `orm:"auto_now_add;type(timestamp);description(创建时间);"` // 创建时间
	UpdateTime     time.Time `orm:"auto_now;type(timestamp);description(更新时间);"`     // 更新时间

}

func (u *NoteChapter) TableName() string {
	return "xk_note_chapter"
}

type NoteLesson struct {
	Id             uint64    `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	NoteId         uint64    //视频所属小册id
	ChapterId      uint64    //视频所属章节id
	Title          string    //视频标题
	Sorted         int       //视频排序
	Playcount      int       //视频播放次数
	FreeFlag       int       //是否免费，0免费，1收费
	Status         int       //1发布 0不发布
	Videoid        string    //云端视频资源id
	Duration       string    //视频时长(秒)
	Videosize      string    //视频大小(字节)
	VideoSourceUrl string    //源视频地址
	ChapterTitle   string    //章标题
	NoteTitle      string    //小册标题
	IsDeleted      int       //删除状态0未删除 1删除
	Mdcontent      string    //md内容
	Htmlcontent    string    //富文本内容
	SystemId       uint64    // 系统ID
	SystemName     string    // 系统名称
	CreateTime     time.Time `orm:"auto_now_add;type(timestamp);description(创建时间);"` // 创建时间
	UpdateTime     time.Time `orm:"auto_now;type(timestamp);description(更新时间);"`     // 更新时间
}

func (u *NoteLesson) TableName() string {
	return "xk_note_lesson"
}

/**
 * @desc 课程点播记录
 * @author feige
 * @date 2023-11-15
 * @version 1.0
 */
type NoteStudyUserRecords struct {
	Id         uint64 `orm:"column(id);pk;auto;description(主键)"` // 业务主键
	NoteId     uint64 //课程ID
	UserId     uint64 //用户ID
	Uuid       string
	Avatar     string
	Username   string    // 用户名称
	Nickname   string    // 用户昵称
	CreateTime time.Time `orm:"auto_now_add;type(timestamp)" ` // 创建时间
	UpdateTime time.Time `orm:"auto_now;type(timestamp)"`      // 更新时间
	ChapterId  uint64    //章
	SpecialId  uint64    //专题ID
	LessonId   uint64    //节
	SystemId   uint64    // 系统ID
	SystemName string    // 系统名称
}

func (u *NoteStudyUserRecords) TableName() string {
	return "xk_note_study_user_records"
}
